perm filename NETWRK.DF2[S,NET] blob
sn#697637 filedate 1983-01-29 generic text, type T, neo UTF8
1) NETWRK.FAI[S,NET] and 2) NETWRK.TMP[S,NET] 1-29-83 21:57 pages 2,2
**** File 1) NETWRK.FAI[S,NET]/2P/1L
1) SUBTTL Network routines, intended to be .INSERT'ed
1) ; Mark Crispin, SU-AI, April 1978
**** File 2) NETWRK.TMP[S,NET]/2P/1L
2) SUBTTL Network routines, intended to be .INSRT'ed
2) ; Mark Crispin, SU-AI, April 1978
***************
**** File 1) NETWRK.FAI[S,NET]/2P/15L
1) ; This is the FAIL version which lives in NETWRK.FAI[SUB,SYS]. The MIDAS version
1) ; lives in NETWRK.MID[S,NET].
1) ; Assembly switches
1) IFNDEF SVRRTS,<SVRRTS←←0> ; ≠ 0 → server (not user) routines
1) IFNDEF DATRTS,<DATRTS←←0> ; ≠ 0 → data channel routines
1) IFNDEF MRKCHR,<MRKCHR←←0> ; ≠ 0 → pass BSP mark bytes as characters
1) IFNDEF ERRHAN,<ERRHAN←←0> ; ≠ 0 → automagic error reporting in NIORTS
1) IFNDEF ERRINS,<ERRINS←←<047000,,12>> ; (iff ERRHAN≠0) what to do after an error
1) IFNDEF HSTSIX,<HSTSIX←←0> ; ≠ 0 → sixbit alias name hacking
1) IFNDEF NIORTS,<NIORTS←←SVRRTS!DATRTS!ERRHAN> ; ≠ 0 → network I/O routines
1) IFNDEF ERRTNS,<ERRTNS←←ERRHAN> ; ≠ 0 → error reporting routines
1) IFNDEF HSTTAB,<HSTTAB←←HSTSIX> ; ≠ 0 → host table routines
1) IFE NIORTS!ERRTNS!HSTTAB,<.FATAL No NETWRK routines selected>
1) IFE NIORTS,<IFN SVRRTS!DATRTS!ERRHAN,<.FATAL NIORTS Illegal switch setting>>
1) IFE ERRTNS,<IFN ERRHAN,<.FATAL ERRHAN Illegal switch setting>>
1) IFE HSTTAB,<IFN HSTSIX,<.FATAL HSTTAB Illegal switch setting>>
1) IFE NIORTS,<IFN MRKCHR,<.FATAL MRKCHR Illegal switch setting>>
1) ; Macro definitions
1) ; FATAL errors type an exclamation point and halt. WARNings type a question
1) ; mark and continue.
1) DEFINE FATAL(STRING)<PUSHJ 17,[OUTSTR [ASCIZ\STRING?\] ↔ JRST LUZBIG]>
1) DEFINE WARN(STRING)<PUSHJ 17,[OUTSTR [ASCIZ\STRING!\] ↔ JRST WARNIN]>
1) ; Timeouts for various flavors of connection
1) IFNDEF CNTIMO,<CNTIMO←←<BYTE (6)1,0,0,=15,5,0>> ; Connect ICP
1) IFNDEF LSTIMO,<LSTIMO←←<BYTE (6)1,=10,=10,=30,0,0>> ; Listen ICP
1) IFNDEF TNTIMO,<TNTIMO←←<BYTE (6)1,=15,0,5,0,0>> ; Telnet socket
1) IFNDEF DATIMO,<DATIMO←←<BYTE (6)2,24,0,7,0,0>> ; Data socket
1) ;INTINR INTINS INTIMS INTINP RFCS RFCR CLSS CLSR SIU CCS SYS NLA ILB IDD GMM IOIMPM IODERR IODTER IOBKTL IODEND ICTRAN HDEAD CTROV RSET TMO ERRBTS WINBTS ICP NET DAT
1) ; System bits and bytes
1) BEGIN NETWRK
1) ; Goddam bagbiting assembler!!!
1) GLOBAL NIORTS,ERRHAN,ERRINS,ERRTNS,HSTTAB,SVRRTS,DATRTS,HSTSIX,MRKCHR
1) DEFINE FATAL(STRING)<PUSHJ 17,[OUTSTR [ASCIZ\STRING?\] ↔ JRST LUZBIG]>
1) DEFINE WARN(STRING)<PUSHJ 17,[OUTSTR [ASCIZ\STRING!\] ↔ JRST WARNIN]>
1) ; Interrupt condition bits
1) ↑INTINR←←<000100,,0> ; IMP INR
1) ↑INTINS←←<000040,,0> ; IMP INS
1) ↑INTIMS←←<000020,,0> ; IMP status change
1) ↑INTINP←←<000010,,0> ; IMP input waiting
1) ; Network socket status flags
1) ↑RFCS←← <200000,,0> ; RFC sent
1) ↑RFCR←← <100000,,0> ; RFC received
1) ↑CLSS←← <040000,,0> ; CLS sent
1) ↑CLSR←← <020000,,0> ; CLS received
1) ; Network status word error codes
**** File 2) NETWRK.TMP[S,NET]/2P/15L
2) ; This is the MIDAS version which lives in NETWRK.MID[S,NET]. The FAIL version
2) ; lives in NETWRK.FAI[SUB,SYS]. [And does not have Ethernet changes]
2) ; Assembly switches
2) IFNDEF SVRRTS,SVRRTS←←0 ; ≠ 0 → server (not user) routines
2) IFNDEF DATRTS,DATRTS←←0 ; ≠ 0 → data channel routines
2) IFNDEF MRKCHR,MRKCHR←←0 ; ≠ 0 → pass BSP mark bytes as characters
2) IFNDEF ERRHAN,ERRHAN←←0 ; ≠ 0 → automagic error reporting in NIORTS
2) IFNDEF ERRINS,ERRINS←←EXIT ; (iff ERRHAN≠0) what to do after an error
2) IFNDEF HSTSIX,HSTSIX←←0 ; ≠ 0 → sixbit alias name hacking
2) IFNDEF NIORTS,NIORTS←←SVRRTS\DATRTS\ERRHAN ; ≠ 0 → network I/O routines
2) IFNDEF ERRTNS,ERRTNS←←ERRHAN ; ≠ 0 → error reporting routines
2) IFNDEF HSTTAB,HSTTAB←←HSTSIX ; ≠ 0 → host table routines
2) IFE NIORTS\ERRTNS\HSTTAB,.FATAL No NETWRK routines selected
2) IFE NIORTS,IFN SVRRTS\DATRTS\ERRHAN,.FATAL NIORTS Illegal switch setting
2) IFE ERRTNS,IFN ERRHAN,.FATAL ERRHAN Illegal switch setting
2) IFE HSTTAB,IFN HSTSIX,.FATAL HSTTAB Illegal switch setting
2) IFE NIORTS,IFN MRKCHR,.FATAL MRKCHR Illegal switch setting
2) ; Macro definitions
2) DEFINE TMSG STRING
2) OUTSTR [ASCIZ\!STRING!\]
2) TERMIN
2) ; FATAL errors type an exclamation point and halt. WARNings type a question
2) ; mark and continue.
2) DEFINE FATAL STRING
2) PUSHJ 17,[OUTSTR [ASCIZ\!STRING!?\] ? JRST LUZBIG]
2) TERMIN
2) DEFINE WARN STRING
2) PUSHJ 17,[OUTSTR [ASCIZ\!STRING!!\] ? JRST WARNIN]
2) TERMIN
2) ; Timeouts for various flavors of connection
2) IFNDEF CNTIMO,CNTIMO←←010000170500 ; connect ICP
2) IFNDEF LSTIMO,LSTIMO←←011212360000 ; listen ICP
2) IFNDEF TNTIMO,TNTIMO←←011700050000 ; TELNET socket
2) IFNDEF DATIMO,DATIMO←←022400070000 ; data socket
2) ;INTINR INTINS INTIMS INTINP RFCS RFCR CLSS CLSR SIU CCS SYS NLA ILB IDD GMM IOIMPM IODERR IODTER IOBKTL IODEND ICTRAN HDEAD CTROV RSET TMO ERRBTS WINBTS ICP NET DAT
2) ; System bits and bytes
2) .BEGIN NETWRK
2) ; Interrupt condition bits
2) ↑INTINR←←000100,, ; IMP INR
2) ↑INTINS←←000040,, ; IMP INS
2) ↑INTIMS←←000020,, ; IMP status change
2) ↑INTINP←←000010,, ; IMP input waiting
2) ; Network socket status flags
2) ↑RFCS←← 200000,, ; RFC sent
2) ↑RFCR←← 100000,, ; RFC received
2) ↑CLSS←← 040000,, ; CLS sent
2) ↑CLSR←← 020000,, ; CLS received
2) ; Network status word error codes
***************
**** File 1) NETWRK.FAI[S,NET]/3P/39L
1) ↑IOIMPM←←400000 ; improper mode
1) ↑IODERR←←200000 ; hard device error
1) ↑IODTER←←100000 ; soft device error
1) ↑IOBKTL←←040000 ; block number out of bounds
1) ↑IODEND←←020000 ; end of file
1) ↑ICTRAN←←004000 ; incomplete transmission
1) ↑HDEAD←← 002000 ; host or destination IMP dead
1) ↑CTROV←← 001000 ; host sent more bits than allocated
1) ↑RSET←← 000400 ; host sent a RST
1) ↑TMO←← 000200 ; time out
1) ERRBTS←←<IOIMPM!IOBKTL!IODEND!ICTRAN!HDEAD!CTROV!RSET!TMO>
1) WINBTS←←<RFCS!RFCR> ; connection winning
1) ; I/O channel definitions
1) ICP←←0 ; channel to get socket from logger
1) ↑NET←←1 ; channel to do real network hacking
1) ↑DAT←←2 ; channel to do data hacking
1) IFE HSTTAB,< ;If not defined later.
1) ; Network numbers (for distinguishing IMP from local Ethernet)
1) NW%SU←←44 ;SUnet
1) NW%ARP←←12 ;Arpa net
1) NW$BYT←←331100 ;Byte pointer to network number
1) >;End IFE HSTTAB
1) ;NWKDBG HSTADR HSTTOP HDBPTR CONBLK CONSTS CONLSK CONWAT CONBYT ICPSKT CONFSK HOST CONHST LSNBLK LSNSTS LSNSKT LSNWAT LSNBYT LSNFSK LSNHST
1) ; Data area
**** File 2) NETWRK.TMP[S,NET]/3P/33L
2) ↑IOIMPM←←400000 ; improper mode
2) ↑IODERR←←200000 ; hard device error
2) ↑IODTER←←100000 ; soft device error
2) ↑IOBKTL←←040000 ; block number out of bounds
2) ↑IODEND←←020000 ; end of file
2) ↑ICTRAN←←004000 ; incomplete transmission
2) ↑HDEAD←← 002000 ; host or destination IMP dead
2) ↑CTROV←← 001000 ; host sent more bits than allocated
2) ↑RSET←← 000400 ; host sent a RST
2) ↑TMO←← 000200 ; time out
2) ERRBTS←←IOIMPM\IOBKTL\IODEND\ICTRAN\HDEAD\CTROV\RSET\TMO
2) WINBTS←←RFCS\RFCR ; connection winning
2) ; I/O channel definitions
2) ICP←←0 ; channel to get socket from logger
2) ↑NET←←1 ; channel to do real network hacking
2) ↑DAT←←2 ; channel to do data hacking
2) IFE HSTTAB,< ;If not defined later.
2) ; Network numbers (for distinguishing IMP from local Ethernet)
2) NW%SU←←:44 ;SUnet
2) NW%ARP←←:12 ;Arpa net
2) NW$BYT←←:331100 ;Byte pointer to network number
2) >;End IFE HSTTAB
2) ;NWKDBG HSTADR HSTTOP HDBPTR CONBLK CONSTS CONLSK CONWAT CONBYT ICPSKT CONFSK HOST CONHST LSNBLK LSNSTS LSNSKT LSNWAT LSNBYT LSNFSK LSNHST OPNBLK NETDEV
2) ; Data area
***************
**** File 1) NETWRK.FAI[S,NET]/4P/11L
1) ↑HSTADR:BLOCK 1 ; ≠ 0 → address of beginning of host table
1) HSTTOP: BLOCK 1 ; top of host table (JOBFF at map time)
**** File 2) NETWRK.TMP[S,NET]/4P/11L
2) ↑HSTADR: ; ≠ 0 → address of beginning of host table
2) BLOCK 1 ; = 0 → host table not in core
2) HSTTOP: BLOCK 1 ; top of host table (JOBFF at map time)
***************
**** File 1) NETWRK.FAI[S,NET]/4P/37L
1) ↑LSNSKT:BLOCK 1 ; local socket to listen to
1) LSNWAT: BLOCK 1 ; ≠ 0 → wait for connection
**** File 2) NETWRK.TMP[S,NET]/4P/38L
2) ↑LSNSKT:
2) BLOCK 1 ; local socket to listen to
2) LSNWAT: BLOCK 1 ; ≠ 0 → wait for connection
***************
**** File 1) NETWRK.FAI[S,NET]/4P/47L
1) NETDEV: 'IMP',,0 ; device name
1) NTOBF,,NTIBF ; buffers
1)
1) ]; End IFN NIORTS!SVRRTS
1) ;WATBLK WATSTS WATSKT INRBLK INRSTS INRSKT INSBLK INSSTS INSSKT WHYWHY NTIBF NTOBF DTIBF DTOBF FSOCKT LSOCKT
**** File 2) NETWRK.TMP[S,NET]/4P/49L
2) ↑NETDEV: 'IMP,,0 ; device name
2) NTOBF,,NTIBF ; buffers
2)
2) >; End IFN NIORTS!SVRRTS
2) ;WATBLK WATSTS WATSKT INRBLK INRSTS INRSKT INSBLK INSSTS INSSKT WHYWHY NTIBF NTOBF DTIBF DTOBF FSOCKT LSOCKT
***************
**** File 1) NETWRK.FAI[S,NET]/5P/43L
1) ↑FSOCKT:BLOCK 1 ; foreign base socket
1) ↑LSOCKT:BLOCK 1 ; local base socket
1) >; End IFN NIORTS
1) ;CONECT .CONEC
1) ; CONECT -- Connect to foreign host
**** File 2) NETWRK.TMP[S,NET]/5P/43L
2) ↑FSOCKT:
2) BLOCK 1 ; foreign base socket
2) ↑LSOCKT:
2) BLOCK 1 ; local base socket
2) >; End IFN NIORTS
2) ;CONECT .CONEC .CONC1 .CONC2 .CONC3
2) ; CONECT -- Connect to foreign host
***************
**** File 1) NETWRK.FAI[S,NET]/6P/21L
1) JRST [PUSHJ 17,MTPERR ↔ ERRINS]
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/6P/21L
2) JRST [PUSHJ 17,MTPERR ? ERRINS]
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/6P/28L
1) MOVEI 1,'PUP'
1) SKIPE 0 ; No net specified => ARPANet
1) CAIN NW%ARP ; ARPANet?
1) MOVEI 1,'IMP' ; yes, use IMP
1) JUMPE 1,[MOVE [360,,HDEAD] ; if unknown name, fake an IMP code
**** File 2) NETWRK.TMP[S,NET]/6P/28L
2) MOVEI 1,'PUP
2) SKIPE 0 ; No net specified => ARPANet
2) CAIN NW%ARP ; ARPANet?
2) MOVEI 1,'IMP ; yes, use IMP
2) JUMPE 1,[MOVE [360,,HDEAD] ; if unknown name, fake an IMP code
***************
**** File 1) NETWRK.FAI[S,NET]/6P/40L
1) MTAPE NET,[17 ↔ TNTIMO]
1) CAIN 1,'PUP' ; Ethernet?
1) JRST .CONC3 ; yes, ICP done in system
1) INIT ICP,17 ; open ICP in dump mode
1) ('IMP') ; device IMP:
1) 0 ; no buffers
1) FATAL IMP INIT failure
1) MTAPE NET,[17 ↔ TNTIMO]
1) .CONC3: SETOM CONLSK ; gensym local socket
1) SETOM CONWAT ; do wait until timeout
1) CAIE 1,'PUP' ; ARPANet?
1) MTAPE ICP,CONBLK ; connect → foreign logger
1) CAIN 1,'PUP' ; Ethernet
1) MTAPE NET,CONBLK ; connect → foreign server
**** File 2) NETWRK.TMP[S,NET]/6P/40L
2) MTAPE NET,[17 ? TNTIMO]
2) CAIN 1,'PUP ; Ethernet?
2) JRST .CONC3 ; yes, ICP done in system
2) INIT ICP,17 ; open ICP in dump mode
2) 'IMP,, ; device IMP:
2) 0 ; no buffers
2) FATAL IMP INIT failure
2) MTAPE ICP,[17 ? CNTIMO] ; set timeouts
2) .CONC3: SETOM CONLSK ; gensym local socket
2) SETOM CONWAT ; do wait until timeout
2) CAIE 1,'PUP ; ARPANet?
2) MTAPE ICP,CONBLK ; connect → foreign logger
2) CAIN 1,'PUP ; Ethernet
2) MTAPE NET,CONBLK ; connect → foreign server
***************
**** File 1) NETWRK.FAI[S,NET]/6P/60L
1) CAIE 1,'PUP' ; ARPANet?
1) GETSTS ICP, ; check for I/O error on proper channel
1) CAIN 1,'PUP' ; Ethernet?
1) GETSTS NET,
**** File 2) NETWRK.TMP[S,NET]/6P/60L
2) CAIE 1,'PUP ; ARPANet?
2) GETSTS ICP, ; check for I/O error on proper channel
2) CAIN 1,'PUP ; Ethernet?
2) GETSTS NET,
***************
**** File 1) NETWRK.FAI[S,NET]/6P/70L
1) CAIN 1,'PUP' ; Ethernet?
1) JRST GOTSK2 ; Already have connection open now!
**** File 2) NETWRK.TMP[S,NET]/6P/70L
2) CAIN 1,'PUP ; Ethernet?
2) JRST GOTSK2 ; Already have connection open now!
***************
**** File 1) NETWRK.FAI[S,NET]/7P/1L
1) ;GOTSKT
1) GOTSKT: LDB [044000,,CONFSK] ; get socket we got
**** File 2) NETWRK.TMP[S,NET]/7P/1L
2) ;GOTSKT GOTSK2 GOTSK3
2) GOTSKT: LDB [044000,,CONFSK] ; get socket we got
***************
**** File 1) NETWRK.FAI[S,NET]/7P/13L
1) MOVEI =8 ; 8 bit bytes
1) MOVEM CONBYT
**** File 2) NETWRK.TMP[S,NET]/7P/13L
2) MOVEI 8. ; 8 bit bytes
2) MOVEM CONBYT
***************
**** File 1) NETWRK.FAI[S,NET]/7P/59L
1) GOTSK3: MOVEI =8 ; change byte size in buffer header
1) DPB [300600,,NTIBF+1]
**** File 2) NETWRK.TMP[S,NET]/7P/59L
2) GOTSK3: MOVEI 8. ; change byte size in buffer header
2) DPB [300600,,NTIBF+1]
***************
**** File 1) NETWRK.FAI[S,NET]/8P/1L
1) ;LISTEN .LISTE
1) ; LISTEN -- Listen for an ICP from a foreign host
1) ; Call: MOVEM <ICP socket number>,LSNSKT
1) ; PUSHJ 17,LISTEN
**** File 2) NETWRK.TMP[S,NET]/8P/1L
2) ;LISTEN .LISTE .LSTN2
2) ; LISTEN -- Listen for an ICP from a foreign host
2) ; Call: MOVEM <ICP socket number>,LSNSKT
2) ; MOVEM <device name>,NETDEV ;If omitted, then use IMP
2) ; PUSHJ 17,LISTEN
***************
**** File 1) NETWRK.FAI[S,NET]/8P/18L
1) JRST [PUSHJ 17,MTPERR ↔ ERRINS]
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/8P/19L
2) JRST [PUSHJ 17,MTPERR ? ERRINS]
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/8P/25L
1) CAIN 1,'PUP' ; Ethernet?
1) JRST .LSTN2
1) MTAPE ICP,[17 ↔ LSTIMO] ; set timeouts
1) INIT NET,0 ; open NET in ASCII mode
1) ('IMP')
1) NTOBF,,NTIBF ; buffers
1) FATAL IMP INIT failure
1) MTAPE NET,[17 ↔ TNTIMO]
1) MOVEI =32 ; ICP byte size
1) MOVEM LSNBYT
1) .LSTN2: SETOM LSNWAT ; do wait until timeout
1) CAIE 1,'PUP' ; select channel according to network
1) MTAPE ICP,LSNBLK
1) CAIN 1,'PUP'
1) MTAPE NET,LSNBLK
**** File 2) NETWRK.TMP[S,NET]/8P/26L
2) CAIN 1,'PUP ; Ethernet?
2) JRST .LSTN2
2) MTAPE NET,[17 ? TNTIMO]
2) INIT ICP,17 ; open ICP in dump mode
2) 'IMP,, ; device IMP:
2) 0 ; no buffers
2) FATAL IMP INIT failure
2) MTAPE ICP,[17 ? LSTIMO] ; set timeouts
2) MOVEI 32. ; ICP byte size
2) MOVEM LSNBYT
2) .LSTN2: SETOM LSNWAT ; do wait until timeout
2) CAIE 1,'PUP ; select channel according to network
2) MTAPE ICP,LSNBLK
2) CAIN 1,'PUP
2) MTAPE NET,LSNBLK
***************
**** File 1) NETWRK.FAI[S,NET]/8P/44L
1) CAIE 1,'PUP' ; ARPANet?
1) GETSTS ICP, ; check for I/O error on approriate channel
1) CAIN 1,'PUP' ; Ethernet?
1) GETSTS NET,
**** File 2) NETWRK.TMP[S,NET]/8P/45L
2) CAIE 1,'PUP ; ARPANet?
2) GETSTS ICP, ; check for I/O error
2) CAIN 1,'PUP ; Ethernet?
2) GETSTS NET,
***************
**** File 1) NETWRK.FAI[S,NET]/8P/58L
1) CAIN 1,'PUP' ; Ethernet?
1) JRST SNTSK2 ; connection already complete
**** File 2) NETWRK.TMP[S,NET]/8P/59L
2) CAIN 1,'PUP ; Ethernet?
2) JRST SNTSK2 ; connection already complete
***************
**** File 1) NETWRK.FAI[S,NET]/9P/1L
1) ;SNTSKT
1) SNTSKT: CLOSE ICP,
**** File 2) NETWRK.TMP[S,NET]/9P/1L
2) ;SNTSKT SNTSK2 SNTSK3
2) SNTSKT: CLOSE ICP,
***************
**** File 1) NETWRK.FAI[S,NET]/9P/10L
1) MOVEI =8 ; 8 bit bytes
1) MOVEM CONBYT
**** File 2) NETWRK.TMP[S,NET]/9P/10L
2) MOVEI 8. ; 8 bit bytes
2) MOVEM CONBYT
***************
**** File 1) NETWRK.FAI[S,NET]/9P/50L
1) SNTSK3: MOVEI =8 ; change byte size in buffer header
1) DPB [300600,,NTIBF+1]
**** File 2) NETWRK.TMP[S,NET]/9P/50L
2) SNTSK3: MOVEI 8. ; change byte size in buffer header
2) DPB [300600,,NTIBF+1]
***************
**** File 1) NETWRK.FAI[S,NET]/10P/10L
1) IFN DATRTS,<
1) ↑DATI:
**** File 2) NETWRK.TMP[S,NET]/10P/10L
2) IFN DATRTS,[
2) ↑DATI:
***************
**** File 1) NETWRK.FAI[S,NET]/10P/15L
1) JRST [PUSHJ 17,MTPERR ↔ ERRINS]
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/10P/15L
2) JRST [PUSHJ 17,MTPERR ? ERRINS]
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/10P/22L
1) ('IMP')
1) DTOBF,,DTIBF ; buffers
1) FATAL IMP INIT failure
1) MTAPE DAT,[17 ↔ DATIMO]
1) .DATI1: MOVE LSOCKT
**** File 2) NETWRK.TMP[S,NET]/10P/22L
2) 'IMP,,
2) DTOBF,,DTIBF ; buffers
2) FATAL IMP INIT failure
2) MTAPE DAT,[17 ? DATIMO]
2) .DATI1: MOVE LSOCKT
***************
**** File 1) NETWRK.FAI[S,NET]/10P/45L
1) MTAPE DAT,[15 ↔ 1] ; system maximum allocation
1) MOVE CONBYT ; change byte size in buffer header
**** File 2) NETWRK.TMP[S,NET]/10P/45L
2) MTAPE DAT,[15 ? 1] ; system maximum allocation
2) MOVE CONBYT ; change byte size in buffer header
***************
**** File 1) NETWRK.FAI[S,NET]/11P/14L
1) JRST [PUSHJ 17,MTPERR ↔ ERRINS]
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/11P/14L
2) JRST [PUSHJ 17,MTPERR ? ERRINS]
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/11P/22L
1) ('IMP')
1) DTOBF,,DTIBF ; buffers
1) FATAL IMP INIT failure
1) MTAPE DAT,[17 ↔ DATIMO]
1) .DATO1: MOVE LSOCKT
**** File 2) NETWRK.TMP[S,NET]/11P/22L
2) 'IMP,,
2) DTOBF,,DTIBF ; buffers
2) FATAL IMP INIT failure
2) MTAPE DAT,[17 ? DATIMO]
2) .DATO1: MOVE LSOCKT
***************
**** File 1) NETWRK.FAI[S,NET]/12P/10L
1) ↑NETICH:TDZA 2,2 ; don't hang
1) ↑NETICW: SETO 2, ; hang
1) IFN ERRHAN,<
1) PUSHJ 17,NTICH2
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17, ; NETICW or empty NETICH
**** File 2) NETWRK.TMP[S,NET]/12P/10L
2) ↑NETICH:
2) TDZA 2,2 ; don't hang
2) ↑NETICW:
2) SETO 2, ; hang
2) IFN ERRHAN,<
2) PUSHJ 17,NTICH2
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17, ; NETICW or empty NETICH
***************
**** File 1) NETWRK.FAI[S,NET]/12P/51L
1) ; Have to flush nulls here.
1) NTICH1: MOVNI 1,-44(1) ; get -1,,# of padding characters
**** File 2) NETWRK.TMP[S,NET]/12P/53L
2) ; Have to flush nulls here. Note: They had better really be nulls or we fail.
2) NTICH1: MOVNI 1,-44(1) ; get -1,,# of padding characters
***************
**** File 1) NETWRK.FAI[S,NET]/12P/58L
1) IBP 1,NTIBF+1 ; move byte pointer
1) MOVEM 1,NTIBF+1 ; save pointer
**** File 2) NETWRK.TMP[S,NET]/12P/60L
2) ADJBP 1,NTIBF+1 ; move byte pointer
2) MOVEM 1,NTIBF+1 ; save pointer
***************
**** File 1) NETWRK.FAI[S,NET]/13P/13L
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/13P/13L
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/14P/12L
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/14P/12L
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/15P/10L
1) IFN DATRTS,<
1) ↑DATICH:TDZA 2,2 ; don't hang
1) ↑DATICW: SETO 2, ; hang
1) IFN ERRHAN,<
1) PUSHJ 17,DTICH2
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17, ; DATICW or empty DATICH
**** File 2) NETWRK.TMP[S,NET]/15P/10L
2) IFN DATRTS,[
2) ↑DATICH:
2) TDZA 2,2 ; don't hang
2) ↑DATICW:
2) SETO 2, ; hang
2) IFN ERRHAN,<
2) PUSHJ 17,DTICH2
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17, ; DATICW or empty DATICH
***************
**** File 1) NETWRK.FAI[S,NET]/15P/34L
1) CAIE =8
1) JRST [ ILDB DTIBF+1 ; non-ASCII data mode
**** File 2) NETWRK.TMP[S,NET]/15P/36L
2) CAIE 8.
2) JRST [ ILDB DTIBF+1 ; non-ASCII data mode
***************
**** File 1) NETWRK.FAI[S,NET]/15P/53L
1) IBP 1,DTIBF+1 ; move byte pointer
1) MOVEM 1,DTIBF+1 ; save pointer
**** File 2) NETWRK.TMP[S,NET]/15P/55L
2) ADJBP 1,DTIBF+1 ; move byte pointer
2) MOVEM 1,DTIBF+1 ; save pointer
***************
**** File 1) NETWRK.FAI[S,NET]/16P/13L
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/16P/13L
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/17P/12L
1) JRST [PUSHJ 17,NIOERR ↔ ERRINS]
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/17P/12L
2) JRST [PUSHJ 17,NIOERR ? ERRINS]
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/18P/8L
1) ↑CLOSER:CLOSE NET,
1) RELEASE NET,
1) OUTSTR [ASCIZ/
1) Connection closed.
1) /]
1) POPJ 17,
1) IFN DATRTS,<
1) ↑CLSDAT:CLOSE DAT,
1) RELEASE DAT,
**** File 2) NETWRK.TMP[S,NET]/18P/8L
2) ↑CLOSER:
2) CLOSE NET,
2) RELEASE NET,
2) TMSG [
2) Connection closed.
2) ]
2) POPJ 17,
2) IFN DATRTS,<
2) ↑CLSDAT:
2) CLOSE DAT,
2) RELEASE DAT,
***************
**** File 1) NETWRK.FAI[S,NET]/19P/8L
1) ↑NETINR:MTAPE NET,INRBLK ; interrupt from receiver
1) POPJ 17,
1) ↑NETINS:MTAPE NET,INSBLK ; interrupt from sender
1) POPJ 17,
**** File 2) NETWRK.TMP[S,NET]/19P/8L
2) ↑NETINR:
2) MTAPE NET,INRBLK ; interrupt from receiver
2) POPJ 17,
2) ↑NETINS:
2) MTAPE NET,INSBLK ; interrupt from sender
2) POPJ 17,
***************
**** File 1) NETWRK.FAI[S,NET]/20P/11L
1) ↑MTPERR:TRNE 77 ; UUO lossage?
1) JRST MTPER1 ; yes, different message
**** File 2) NETWRK.TMP[S,NET]/20P/11L
2) ↑MTPERR:
2) TRNE 77 ; UUO lossage?
2) JRST MTPER1 ; yes, different message
***************
**** File 1) NETWRK.FAI[S,NET]/20P/26L
1) JRST [ OUTSTR [ASCIZ/MTAPE error #/]
1) IDIVI 10
1) ADDI "0"
1) ADDI 1,"0"
1) OUTCHR
**** File 2) NETWRK.TMP[S,NET]/20P/27L
2) JRST [ TMSG [MTAPE error #]
2) IDIVI 10
2) ADDI "0
2) ADDI 1,"0
2) OUTCHR
***************
**** File 1) NETWRK.FAI[S,NET]/21P/9L
1) ↑NIOERR:ANDI ERRBTS ; only error bits
1) SKIPN
**** File 2) NETWRK.TMP[S,NET]/21P/9L
2) ↑NIOERR:
2) ANDI ERRBTS ; only error bits
2) SKIPN
***************
**** File 1) NETWRK.FAI[S,NET]/21P/18L
1) OUTSTR [ASCIZ/Connection closed
1) /]
1) TRNE RSET
1) OUTSTR [ASCIZ/Host reset
1) /]
1) TRNE TMO
1) OUTSTR [ASCIZ/Time out
1) /]
1) TRNE IODEND
1) OUTSTR [ASCIZ/Host closed connection
1) /]
1) TRNE ICTRAN
1) OUTSTR [ASCIZ/Incomplete transmission
1) /]
1) TRNE HDEAD
**** File 2) NETWRK.TMP[S,NET]/21P/19L
2) TMSG [Connection closed
2) ]
2) TRNE RSET
2) TMSG [Host reset
2) ]
2) TRNE TMO
2) TMSG [Time out
2) ]
2) TRNE IODEND
2) TMSG [Host closed connection
2) ]
2) TRNE ICTRAN
2) TMSG [Incomplete transmission
2) ]
2) TRNE HDEAD
***************
**** File 1) NETWRK.FAI[S,NET]/22P/6L
1) JUMPE [ OUTSTR [ASCIZ/Net trouble
1) /]
1) POPJ 17,] ; 0 → destination IMP down
**** File 2) NETWRK.TMP[S,NET]/22P/6L
2) JUMPE [ TMSG [Net trouble
2) ]
2) POPJ 17,] ; 0 → destination IMP down
***************
**** File 1) NETWRK.FAI[S,NET]/22P/23L
1) OUTSTR [ASCIZ/Host dead, /]
1) LDB 1,[220400,,WHYWHY] ; dead host status
**** File 2) NETWRK.TMP[S,NET]/22P/23L
2) TMSG [Host dead, ]
2) LDB 1,[220400,,WHYWHY] ; dead host status
***************
**** File 1) NETWRK.FAI[S,NET]/22P/41L
1) OUTSTR [ASCIZ/
1) /]
1) ;HSTDE2
**** File 2) NETWRK.TMP[S,NET]/22P/41L
2) TMSG [
2) ]
2) ;HSTDE2
***************
**** File 1) NETWRK.FAI[S,NET]/23P/9L
1) OUTSTR [ASCIZ/ Host is expected back up /]
1) CAIN 7777 ; -1 → more than a week
1) JRST [ OUTSTR [ASCIZ/over a week from now./]
1) POPJ 17,]
1) LDB 1,[040500,,0] ; 1.5→1.9 hours
1) LDB 2,[110300,,0] ; 2.1→2.3 day of week
1) SUBI 1,=8 ; PST/GMT offset
1) MOVEI 3,261 ; DAYLIT
**** File 2) NETWRK.TMP[S,NET]/23P/9L
2) TMSG [ Host is expected back up ]
2) CAIN 7777 ; -1 → more than a week
2) JRST [ TMSG [over a week from now.]
2) POPJ 17,]
2) LDB 1,[040500,,] ; 1.5→1.9 hours
2) LDB 2,[110300,,] ; 2.1→2.3 day of week
2) SUBI 1,8. ; PST/GMT offset
2) MOVEI 3,261 ; DAYLIT
***************
**** File 1) NETWRK.FAI[S,NET]/23P/22L
1) ADDI 1,=24 ; hours become positive again
1) SOJGE 2,HSTDE2 ; back up a day
1) SETZ 2, ; back to Monday
1) HSTDE2: OUTSTR @(2)[ [ASCIZ/on Monday at /]
**** File 2) NETWRK.TMP[S,NET]/23P/22L
2) ADDI 1,24. ; hours become positive again
2) SOJGE 2,HSTDE2 ; back up a day
2) MOVEI 2,6
2) HSTDE2: OUTSTR @(2)[ [ASCIZ/on Monday at /]
***************
**** File 1) NETWRK.FAI[S,NET]/23P/33L
1) IDIVI 1,=10
1) ADDI 1,"0"
1) OUTCHR 1
1) ADDI 2,"0"
1) OUTCHR 2
1) OUTCHR [":"]
1) LDB 1,[000400,,0] ; 1.1→1.4 minutes/5
1) IMULI 1,5. ; make into real minutes
1) IDIVI 1,=10
1) ADDI 1,"0"
1) OUTCHR 1
1) ADDI 2,"0"
1) OUTCHR 2
1) JUMPE 3,[ OUTSTR [ASCIZ/ PST
1) /]
1) POPJ 17,]
1) OUTSTR [ASCIZ/ PDT
1) /]
1) POPJ 17,
1) >; End IFN ERRTNS
1) ;HSTSID HSTFN1 HSTVRS HSTDIR HSTMCH HSTWHO HSTDAT HSTTIM NAMPTR SITPTR NETPTR NETNUM NTLNAM NTRTAB NETLEN ADDADR ADLSIT ADRCDR ADDLEN STLNAM STRADR STLSYS STRMCH STLFLG STFSRV SITLEN NMLSIT NMRNAM NAMLEN NW%CHS NW%ARP NW%RCC NW%DLN NW%DSK NW%LCS NW%SU NW$BYT
1) ; Host table routines (HOSTS2)
**** File 2) NETWRK.TMP[S,NET]/23P/33L
2) IDIVI 1,10.
2) ADDI 1,"0
2) OUTCHR 1
2) ADDI 2,"0
2) OUTCHR 2
2) OUTCHR [":]
2) LDB 1,[000400,,] ; 1.1→1.4 minutes/5
2) IMULI 1,5. ; make into real minutes
2) IDIVI 1,10.
2) ADDI 1,"0
2) OUTCHR 1
2) ADDI 2,"0
2) OUTCHR 2
2) JUMPE 3,[ TMSG [ PST
2) ]
2) POPJ 17,]
2) TMSG [ PDT
2) ]
2) POPJ 17,
2) >; End IFN ERRTNS
2) ; Host table routines (HOSTS2)
***************
**** File 1) NETWRK.FAI[S,NET]/24P/8L
1) HSTSID←←0 ; wd 0 SIXBIT /HOSTS2/
1) HSTFN1←←1 ; wd 1 SIXBIT /HOSTS/ usually
1) HSTVRS←←2 ; wd 2 FN2 of HOSTS file which this was compiled from.
1) HSTDIR←←3 ; wd 3 SIXBIT /SYSENG/ usually, directory name of source file
1) HSTMCH←←4 ; wd 4 SIXBIT /AI/ (e.g.), device name of source file
1) HSTWHO←←5 ; wd 5 UNAME of person who compiled this
1) HSTDAT←←6 ; wd 6 Date of compilation as sixbit YYMMDD
1) HSTTIM←←7 ; wd 7 Time of compilation as sixbit HHMMSS
1) NAMPTR←←10 ; wd 10 Address in file of NAME table.
1) SITPTR←←11 ; wd 11 Address in file of SITE table.
1) NETPTR←←12 ; wd 12 Address in file of NETWORK table.
1) ;....expandable....
**** File 2) NETWRK.TMP[S,NET]/24P/6L
2) HSTSID←←:0 ; wd 0 SIXBIT /HOSTS2/
2) HSTFN1←←:1 ; wd 1 SIXBIT /HOSTS/ usually
2) HSTVRS←←:2 ; wd 2 FN2 of HOSTS file which this was compiled from.
2) HSTDIR←←:3 ; wd 3 SIXBIT /SYSENG/ usually, directory name of source file
2) HSTMCH←←:4 ; wd 4 SIXBIT /AI/ (e.g.), device name of source file
2) HSTWHO←←:5 ; wd 5 UNAME of person who compiled this
2) HSTDAT←←:6 ; wd 6 Date of compilation as sixbit YYMMDD
2) HSTTIM←←:7 ; wd 7 Time of compilation as sixbit HHMMSS
2) NAMPTR←←:10 ; wd 10 Address in file of NAME table.
2) SITPTR←←:11 ; wd 11 Address in file of SITE table.
2) NETPTR←←:12 ; wd 12 Address in file of NETWORK table.
2) ;....expandable....
***************
**** File 1) NETWRK.FAI[S,NET]/24P/30L
1) NETNUM←←0 ; wd 0 network number
1) NTLNAM←←1 ; wd 1 LH - address in file of name of network
1) NTRTAB←←1 ; wd 1 RH - address in file of network's address table
1) NETLEN←←2
1) ;ADDRESS table(s)
**** File 2) NETWRK.TMP[S,NET]/24P/28L
2) NETNUM←←:0 ; wd 0 network number
2) NTLNAM←←:1 ; wd 1 LH - address in file of name of network
2) NTRTAB←←:1 ; wd 1 RH - address in file of network's address table
2) NETLEN←←:2
2) ;ADDRESS table(s)
***************
**** File 1) NETWRK.FAI[S,NET]/24P/44L
1) ADDADR←←0 ; wd 0 Network address of this entry (including network number).
1) ADLSIT←←1 ; wd 1 LH - address in file of SITE table entry
1) ADRCDR←←1 ; wd 1 RH - address in file of next ADDRESS entry for this site
1) ; 0 = end of list
1) ADDLEN←←2
1) ;SITE table
**** File 2) NETWRK.TMP[S,NET]/24P/42L
2) ADDADR←←:0 ; wd 0 Network address of this entry (including network number).
2) ADLSIT←←:1 ; wd 1 LH - address in file of SITE table entry
2) ADRCDR←←:1 ; wd 1 RH - address in file of next ADDRESS entry for this site
2) ; 0 = end of list
2) ADDLEN←←:2
2) ;SITE table
***************
**** File 1) NETWRK.FAI[S,NET]/24P/58L
1) STLNAM←←0 ; wd 0 LH - address in file of official host name
1) STRADR←←0 ; wd 0 RH - address in file of first ADDRESS table entry for this
1) ; site. Successive entries are threaded together
1) ; through ADRCDR.
1) STLSYS←←1 ; wd 1 LH - address in file of system name (ITS, TIP, TENEX, etc.)
1) ; May be 0 => not known.
1) STRMCH←←1 ; wd 1 RH - address in file of machine name (PDP10, etc.)
1) ; May be 0 => not known.
1) STLFLG←←2 ; wd 2 LH - flags:
1) STFSRV←←400000 ; 4.9 1 => server site (according to NIC)
1) ; wd 2 RH - not used
1) SITLEN←←3
1) ;NAMES table:
**** File 2) NETWRK.TMP[S,NET]/24P/56L
2) STLNAM←←:0 ; wd 0 LH - address in file of official host name
2) STRADR←←:0 ; wd 0 RH - address in file of first ADDRESS table entry for this
2) ; site. Successive entries are threaded together
2) ; through ADRCDR.
2) STLSYS←←:1 ; wd 1 LH - address in file of system name (ITS, TIP, TENEX, etc.)
2) ; May be 0 => not known.
2) STRMCH←←:1 ; wd 1 RH - address in file of machine name (PDP10, etc.)
2) ; May be 0 => not known.
2) STLFLG←←:2 ; wd 2 LH - flags:
2) STFSRV←←:400000 ; 4.9 1 => server site (according to NIC)
2) ; wd 2 RH - not used
2) SITLEN←←:3
2) ;NAMES table:
***************
**** File 1) NETWRK.FAI[S,NET]/24P/76L
1) NMLSIT←←0 ; lh address in file of SITE table entry for this host.
1) NMRNAM←←0 ; rh address in file of host name
1) ;This name is official if NMRNAM = STLNAM of NMLSIT.
1) NAMLEN←←1
1) ; All names are ASCIZ strings, all letters upper case.
**** File 2) NETWRK.TMP[S,NET]/24P/74L
2) NMLSIT←←:0 ; lh address in file of SITE table entry for this host.
2) NMRNAM←←:0 ; rh address in file of host name
2) ;This name is official if NMRNAM = STLNAM of NMLSIT.
2) NAMLEN←←:1
2) ; All names are ASCIZ strings, all letters upper case.
***************
**** File 1) NETWRK.FAI[S,NET]/24P/109L
1) ↑NW%CHS←←7 ;Chaos net
1) ↑NW%ARP←←12 ;Arpa net
1) ↑NW%RCC←←3 ;BBN-RCCnet
1) ↑NW%DLN←←26 ;Dialnet
1) ↑NW%DSK←←777 ;DSKnet
1) ↑NW%LCS←←22 ;LCSnet
1) ↑NW%SU←←44 ;SUnet
1) ↑NW$BYT←←331100 ;Byte pointer to network number
1) ;Other network address formats accepted elsewhere:
**** File 2) NETWRK.TMP[S,NET]/24P/107L
2) NW%CHS←←:7 ;Chaos net
2) NW%ARP←←:12 ;Arpa net
2) NW%RCC←←:3 ;BBN-RCCnet
2) NW%DLN←←:26 ;Dialnet
2) NW%DSK←←:777 ;DSKnet
2) NW%LCS←←:22 ;LCSnet
2) NW%SU←←:44 ;SUnet
2) NW$BYT←←:331100 ;Byte pointer to network number
2) ;Other network address formats accepted elsewhere:
***************
**** File 1) NETWRK.FAI[S,NET]/24P/142L
1) IFN 0,< ;Old names used by HOSTS1 for use in conversion
1) ; NUMBERS table
1) NUMNUM==0 ; host number
1) NUMSYS==1 ; LH pointer to system name
1) NUMNAM==1 ; RH pointer to official name of host.
1) NUMBTS==2 ; LH flags:
1) NUMSRV==400000 ; 4.9 → server site.
1) NUMMCH==2 ; RH pointer to machine name
1) ; NAMES table
1) NAMNAM==0 ; <numbers pointer,,host name pointer>
1) >;IFN 0
1) ;MAPHST
**** File 2) NETWRK.TMP[S,NET]/25P/1L
2) ;MAPHST
***************
**** File 1) NETWRK.FAI[S,NET]/25P/8L
1) ↑MAPHST:SKIPE HSTADR
1) JRST [ WARN Host table already mapped
**** File 2) NETWRK.TMP[S,NET]/25P/8L
2) ↑MAPHST:
2) SKIPE HSTADR
2) JRST [ WARN Host table already mapped
***************
**** File 1) NETWRK.FAI[S,NET]/25P/12L
1) ('DSK')
1) 0
**** File 2) NETWRK.TMP[S,NET]/25P/13L
2) 'DSK,,
2) 0
***************
**** File 1) NETWRK.FAI[S,NET]/25P/16L
1) MOVE 3,['HSTNET']
1) LOOKUP ; find file HOSTS2.BIN[HST,NET]
1) JRST [ OUTSTR [ASCIZ/Host table LOOKUP failure (/]
1) ANDI 1,77
1) IDIVI 1,10
1) ADDI 1,"0" ↔ ADDI 2,"0"
1) OUTCHR 1 ↔ OUTCHR 2 ↔ OUTCHR [")"]
1) JRST LUZBIG]
1) MOVE 2,JOBFF↑
1) MOVS 3 ↔ MOVN ↔ ADDB JOBFF↑ ; get address of highest addr we need
1) MOVEM HSTTOP
**** File 2) NETWRK.TMP[S,NET]/25P/17L
2) MOVE 3,['HSTNET]
2) LOOKUP ; find file HOSTS2.BIN[HST,NET]
2) JRST [ TMSG [Host table LOOKUP failure (]
2) ANDI 1,77
2) IDIVI 1,10
2) ADDI 1,"0 ? ADDI 2,"0
2) OUTCHR 1 ? OUTCHR 2 ? OUTCHR [")]
2) JRST LUZBIG]
2) MOVE 2,JOBFF
2) MOVS 3 ? MOVN ? ADDB JOBFF ; get address of highest addr we need
2) MOVEM HSTTOP
***************
**** File 1) NETWRK.FAI[S,NET]/25P/29L
1) MOVE 3 ↔ HRRI -1(2) ; compute IOWD to read host table in
1) SETZ 1,
**** File 2) NETWRK.TMP[S,NET]/25P/30L
2) MOVE 3 ? HRRI -1(2) ; compute IOWD to read host table in
2) SETZ 1,
***************
**** File 1) NETWRK.FAI[S,NET]/25P/33L
1) CAME ['HOSTS2']
1) FATAL Bad host table
**** File 2) NETWRK.TMP[S,NET]/25P/34L
2) CAME ['HOSTS2]
2) FATAL Bad host table
***************
**** File 1) NETWRK.FAI[S,NET]/26P/8L
1) ↑UNMHST:SKIPN 1,HSTADR ; host table in core?
1) JRST [ WARN Host table not mapped
**** File 2) NETWRK.TMP[S,NET]/26P/8L
2) ↑UNMHST:
2) SKIPN 1,HSTADR ; host table in core?
2) JRST [ WARN Host table not mapped
***************
**** File 1) NETWRK.FAI[S,NET]/26P/12L
1) CAME ['HOSTS2']
1) FATAL Bad host table
1) MOVE HSTTOP ; check JOBFF from before
1) CAMLE JOBFF↑ ; smashed too?
1) FATAL Host table after JOBFF
1) CAME JOBFF↑
1) JRST [ WARN Host table locked
**** File 2) NETWRK.TMP[S,NET]/26P/13L
2) CAME ['HOSTS2]
2) FATAL Bad host table
2) MOVE HSTTOP ; check JOBFF from before
2) CAMLE JOBFF ; smashed too?
2) FATAL Host table after JOBFF
2) CAME JOBFF
2) JRST [ WARN Host table locked
***************
**** File 1) NETWRK.FAI[S,NET]/26P/21L
1) MOVEM 1,JOBFF↑ ; return host table to free storage
1) CORE 1, ; and garbage collect
**** File 2) NETWRK.TMP[S,NET]/26P/22L
2) MOVEM 1,JOBFF ; return host table to free storage
2) CORE 1, ; and garbage collect
***************
**** File 1) NETWRK.FAI[S,NET]/27P/10L
1) ↑HSTNUM:SKIPN 1,HSTADR ; fail if host table not mapped
1) FATAL Host table not mapped
1) MOVE 2,(1)
1) CAME 2,['HOSTS2']
1) FATAL Bad host table
**** File 2) NETWRK.TMP[S,NET]/27P/10L
2) ↑HSTNUM:
2) SKIPN 1,HSTADR ; fail if host table not mapped
2) FATAL Host table not mapped
2) MOVE 2,(1)
2) CAME 2,['HOSTS2]
2) FATAL Bad host table
***************
**** File 1) NETWRK.FAI[S,NET]/27P/40L
1) HLRZ 1,ADLSIT(1) ; get site table entry
1) ADD 1,HSTADR
1) AOS (17) ; successful return
1) JRST GETHDB ; return useful stuff in ACs
1) HSTNUS: ADD 1,HSTADR ; relocate table
**** File 2) NETWRK.TMP[S,NET]/27P/41L
2) HLRZ 1,ADLSIT(1) ; Get site table entry
2) ADD 1,HSTADR
2) JRST GETHDB
2) HSTNUS: ADD 1,HSTADR ; relocate table
***************
**** File 1) NETWRK.FAI[S,NET]/28P/8L
1) ; <return--absolute NUMNUM in 0, NUMSYS,,NUMNAM in 1, NUMBTS,,NUMMCH in 2
1) ; next address block in 3>
1) ; Smashes 0 → 11 (!!!).
1) ↑HSTNAM:SKIPN 1,HSTADR ; fail if host table not mapped
1) FATAL Host table not mapped
1) MOVE 2,(1)
1) CAME 2,['HOSTS2']
1) FATAL Bad host table
**** File 2) NETWRK.TMP[S,NET]/28P/8L
2) ; <return--absolute NAMNUM in 0, NUMSYS,,NUMNAM in 1, NUMBTS,,NUMMCH in 2
2) ; next address block in 3>
2) ; Smashes 0 → 10 (!!!).
2) ↑HSTNAM:
2) SKIPN 1,HSTADR ; fail if host table not mapped
2) FATAL Host table not mapped
2) MOVE 2,(1)
2) CAME 2,['HOSTS2]
2) FATAL Bad host table
***************
**** File 1) NETWRK.FAI[S,NET]/28P/36L
1) CAIL 4,"a" ; lowercase?
1) SUBI 4,"a"-"A"
1) DPB 4,3
**** File 2) NETWRK.TMP[S,NET]/28P/37L
2) CAIL 4,"a ; lowercase?
2) SUBI 4,"a-"A
2) DPB 4,3
***************
**** File 1) NETWRK.FAI[S,NET]/29P/12L
1) CAIL 5,=5 ; account for this word
1) JRST [ CAME 10,11 ; match for this word?
1) JRST SRCLUZ
1) SUBI 5,=5 ; match, account for this word
1) ADDI 7,1
1) AOJA 6,SRCNXW] ; still more to go
1) AND 11,[BYTE (7)000,000,000,000,000
1) BYTE (7)177,000,000,000,000
1) BYTE (7)177,177,000,000,000
1) BYTE (7)177,177,177,000,000
1) BYTE (7)177,177,177,177,000](5)
1) CAMN 10,11 ; exact match?
1) JRST [ HLRZ 1,(1) ↔ ADD 1,HSTADR
1) JRST GOTNAM] ; stop the presses!
1) SOJL 5,SRCWIN ; this string ends on word boundry
1) AND 10,[BYTE (7)177,000,000,000,000
1) BYTE (7)177,177,000,000,000
1) BYTE (7)177,177,177,000,000
1) BYTE (7)177,177,177,177,000](5)
1) CAME 10,11 ; match for partial word?
1) JRST SRCLUZ
1) SRCWIN: HLRZ 5,(1) ↔ ADD 5,HSTADR ; set up pointer to HDB
1) MOVE 6,2(5) ; NUMBTS
**** File 2) NETWRK.TMP[S,NET]/29P/12L
2) CAIL 5,5. ; account for this word
2) JRST [ CAME 10,11 ; match for this word?
2) JRST SRCLUZ
2) SUBI 5,5. ; match, account for this word
2) ADDI 7,1
2) AOJA 6,SRCNXW] ; still more to go
2) AND 11,[.BYTE 7 ? 177 ? 000 ? 000 ? 000 ? 000
2) .BYTE 7 ? 177 ? 000 ? 000 ? 000 ? 000
2) .BYTE 7 ? 177 ? 177 ? 000 ? 000 ? 000
2) .BYTE 7 ? 177 ? 177 ? 177 ? 000 ? 000
2) .BYTE 7 ? 177 ? 177 ? 177 ? 177 ? 000](5)
2) CAMN 10,11 ; exact match?
2) JRST [ HLRZ 1,(1) ? ADD 1,HSTADR
2) JRST GOTNAM] ; stop the presses!
2) SOJL 5,SRCWIN ; this string ends on word boundry
2) AND 10,[.BYTE 7 ? 177 ? 000 ? 000 ? 000 ? 000
2) .BYTE 7 ? 177 ? 177 ? 000 ? 000 ? 000
2) .BYTE 7 ? 177 ? 177 ? 177 ? 000 ? 000
2) .BYTE 7 ? 177 ? 177 ? 177 ? 177 ? 000](5)
2) CAME 10,11 ; match for partial word?
2) JRST SRCLUZ
2) SRCWIN: HLRZ 5,(1) ? ADD 5,HSTADR ; set up pointer to HDB
2) MOVE 6,2(5) ; NUMBTS
***************
**** File 1) NETWRK.FAI[S,NET]/29P/65L
1) TRNE 3,-1
1) ADD 3,HSTADR
1) ldb 2,[nw$byt,,0]
1) cain 2,nw%su ; *** Screwed up HOSTS2?
1) jrst [ ldb 2,[101100,,0] ; *** Perhaps
1) caile 2,77 ; *** Too big?
1) lsh 2,-1 ; *** Sigh, patch it up!
1) dpb 2,[101100,,0]
1) jrst gethdb ]
1) CAILE 377 ; old style host?
**** File 2) NETWRK.TMP[S,NET]/29P/65L
2) ldb 2,[nw$byt,,0]
2) cain 2,nw%su ; *** Screwed up HOSTS2?
2) pushj 17,[ldb 2,[101100,,0] ; *** Perhaps
2) caile 2,77 ; *** Too big?
2) lsh 2,-1 ; *** Sigh, patch it up!
2) dpb 2,[101100,,0]
2) popj 17, ]
2) CAILE 377 ; old style host?
***************
**** File 1) NETWRK.FAI[S,NET]/30P/1L
1) ;SETANM SETAN1 SETAN0 SETAN2 SETAN4 SETAN5 SETAN6 SETAN7 SETAN8
**** File 2) NETWRK.TMP[S,NET]/30P/1L
2) ;HSTNXA HSTNU0 HSTNU1 HSTNU2
2) ; HSTNXA -- Return descriptor block for a host
2) ; Call: MOVE 3,<number return by HSTNAM as next address block>
2) ; PUSHJ 17,HSTNXA
2) ; <error return--no other addresses>
2) ; <return--absolute NAMNUM in 0, next address block in 3>
2) ; Does not disturb 1,2
2) ↑HSTNXA:
2) SKIPN HSTADR ; fail if host table not mapped
2) FATAL Host table not mapped
2) MOVE 0,@HSTADR
2) CAME 0,['HOSTS2]
2) FATAL Bad host table
2) JUMPE 3,[ SETZ 0, ; if no addresses left, fail
2) POPJ 17,]
2) ADD 3,HSTADR
2) MOVE 0,ADDADR(3) ; get this address
2) push 17,2
2) ldb 2,[nw$byt,,0]
2) cain 2,nw%su ; *** Screwed up HOSTS2?
2) pushj 17,[ldb 2,[101100,,0] ; *** Perhaps
2) caile 2,77 ; *** Too big?
2) lsh 2,-1 ; *** Sigh, patch it up!
2) dpb 2,[101100,,0]
2) popj 17, ]
2) pop 17,2
2) HRRZ 3,ADRCDR(3) ; get other address(es), if any
2) AOS (17)
2) POPJ 17, ; failure
2) ;SETANM SETAN1 SETAN0 SETAN2 SETAN4 SETAN5 SETAN6 SETAN7 SETAN8
***************
**** File 1) NETWRK.FAI[S,NET]/30P/10L
1) ↑SETANM:HRRZ 6,1 ; check official name first
1) SKIPN 1,HDBPTR
1) JRST [ MOVE ['RANDOM']
1) JRST SETAN8]
**** File 2) NETWRK.TMP[S,NET]/31P/10L
2) ↑SETANM:
2) HRRZ 6,1 ; check official name first
2) SKIPN 1,HDBPTR
2) JRST [ MOVE ['RANDOM]
2) JRST SETAN8]
***************
**** File 1) NETWRK.FAI[S,NET]/30P/46L
1) MOVEI 4,"-" ; also, will remove hyphens from it
1) HRRZ 5,STLNAM(5)
**** File 2) NETWRK.TMP[S,NET]/31P/46L
2) MOVEI 4,"- ; also, will remove hyphens from it
2) HRRZ 5,STLNAM(5)
***************
**** File 1) NETWRK.FAI[S,NET]/30P/56L
1) JRST SETAN6 ; note 4 has number from 1 to 6 or "-"
1) SUBI 3," "-' '
1) IDPB 3,1
**** File 2) NETWRK.TMP[S,NET]/31P/56L
2) JRST SETAN6 ; note 4 has number from 1 to 6 or "-
2) SUBI 3,<" >-<' >
2) IDPB 3,1
***************
**** File 1) NETWRK.FAI[S,NET]/30P/62L
1) CAIN 3,'-'
1) SETZ 3,
**** File 2) NETWRK.TMP[S,NET]/31P/62L
2) CAIN 3,'-
2) SETZ 3,
***************
**** File 1) NETWRK.FAI[S,NET]/30P/66L
1) IORI '.'
1) SETO 1,
**** File 2) NETWRK.TMP[S,NET]/31P/66L
2) IORI '.
2) SETO 1,
***************
**** File 1) NETWRK.FAI[S,NET]/31P/13L
1) ↑WARNIN:OUTSTR [ASCIZ/
1) Please report this via GRIPE.
1) /]
1) POPJ 17,
1) ; Fatality!
1) ↑LUZBIG:OUTSTR [ASCIZ/
1) Find a wizard.
1) /]
1) JRST 4,WARNIN
1) ..NLIT: LIT
1) BEND NETWRK
**** File 2) NETWRK.TMP[S,NET]/32P/13L
2) ↑WARNIN:
2) TMSG [
2) Please report this via GRIPE NETWORK.
2) ]
2) POPJ 17,
2) ; Fatality!
2) ↑LUZBIG:
2) TMSG [
2) Find a wizard.
2) ]
2) JRST 4,WARNIN
2) ..NLIT: CONSTANTS
2) ;Export these things (put here, so that entire definition page can be just
2) ;recopied if we ever change to HOST3)
2) ↑NW%ARP←←NW%ARP
2) ↑NW%SU←←NW%SU
2) ↑NW$BYT←←NW$BYTE
2) .END NETWRK
***************